1. 덧셈에서 곱셈으로
이론적 프레임워크에서는 선형 변환과 이동(아핀 사상)이 종종 별도로 처리됩니다. 그러나 고성능 라이브러리인 BLAS (기본 선형대수 하위루틴) 은 행렬-벡터 및 행렬-행렬 곱셈에 특별히 최적화되어 있습니다. 이러한 커널을 활용하기 위해 모든 연산을 다음과 같이 표현합니다:
$$T(v) = Av$$
2. 동차 좌표
행렬을 사용하여 $\mathbf{R}^n$ 공간에서 이동을 구현하려면 $\mathbf{R}^{n+1}$로 확장해야 합니다. 벡터 $[x, y, z]^T$는 $[x, y, z, 1]^T$로 변환됩니다. 이 '추가적인 1'은 $(n+1) \times (n+1)$ 행렬의 마지막 열에 이동을 인코딩할 수 있게 해줍니다.
변환 $v_0 = [t_x, t_y, t_z]^T$는 다음처럼 표현됩니다:
$$A = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}$$
마지막 행의 숫자 $0, 0, 0, 1$는 중요한 역할을 합니다. $A$가 마지막 성분이 $1$인 벡터와 곱해질 때, 결과로 나오는 마지막 성분은:
$(0 \cdot x) + (0 \cdot y) + (0 \cdot z) + (1 \cdot 1) = 1$
이는 데이터의 '아핀' 성질이 유지되도록 보장하며, 좌표계의 정합성을 잃지 않고 연속적인 연산을 수행할 수 있게 해줍니다.
3. 구현 표준: BLAS
수치 효율성은 표준화된 하위루틴에 의존합니다. BLAS 은 세 가지 수준의 연산을 제공합니다:
- 레벨 1: 벡터-벡터 연산 (예: 내적).
- 레벨 2: 행렬-벡터 연산 ($Ax+b$).
- 레벨 3: 행렬-행렬 연산 ($AB+C$), 이는 가장 계산 밀도가 높고 하드웨어 효율성이 뛰어납니다.